x86: Update map_pages_to_xen() to avoid arithmetic based on
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 26 Feb 2007 16:27:35 +0000 (16:27 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 26 Feb 2007 16:27:35 +0000 (16:27 +0000)
uninitialised frame_table variable.
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/mm.c

index 1798be5e525fc85902d5b8b4a93de6e2b52a1380..7f442f0172d0277d6684832a17e6051578e37458 100644 (file)
@@ -3401,7 +3401,7 @@ int map_pages_to_xen(
             {
                 local_flush_tlb_pge();
                 if ( !(l2e_get_flags(ol2e) & _PAGE_PSE) )
-                    free_xen_pagetable(page_to_virt(l2e_get_page(ol2e)));
+                    free_xen_pagetable(mfn_to_virt(l2e_get_pfn(ol2e)));
             }
 
             virt    += 1UL << L2_PAGETABLE_SHIFT;
@@ -3415,8 +3415,8 @@ int map_pages_to_xen(
             {
                 pl1e = alloc_xen_pagetable();
                 clear_page(pl1e);
-                l2e_write(pl2e, l2e_from_page(virt_to_page(pl1e),
-                                              __PAGE_HYPERVISOR));
+                l2e_write(pl2e, l2e_from_pfn(virt_to_mfn(pl1e),
+                                             __PAGE_HYPERVISOR));
             }
             else if ( l2e_get_flags(*pl2e) & _PAGE_PSE )
             {
@@ -3425,8 +3425,8 @@ int map_pages_to_xen(
                     l1e_write(&pl1e[i],
                               l1e_from_pfn(l2e_get_pfn(*pl2e) + i,
                                            l2e_get_flags(*pl2e) & ~_PAGE_PSE));
-                l2e_write(pl2e, l2e_from_page(virt_to_page(pl1e),
-                                              __PAGE_HYPERVISOR));
+                l2e_write(pl2e, l2e_from_pfn(virt_to_mfn(pl1e),
+                                             __PAGE_HYPERVISOR));
                 local_flush_tlb_pge();
             }